#include "stdafx.h"
#include "CConvert.h"
#include "Text.h"

NAMESPACE_CORE_BEGIN

int_32 CConvert::ToInt32(const char_8 * szText, uint_32 uiBase/* = 10*/)
{
	if(TextBeginWith(szText, "0x") || TextBeginWith(szText, "0X"))
		return TextToInt32(szText, 16);
	else if(TextBeginWith(szText, "00") || TextBeginWith(szText, "00"))
		return TextToInt32(szText, 8);
	else
		return TextToInt32(szText, uiBase);
}

int_32 CConvert::ToInt32(const char_16 * szText, uint_32 uiBase/* = 10*/)
{
	if(TextBeginWith(szText, L"0x") || TextBeginWith(szText, L"0X"))
		return TextToInt32(szText, 16);
	else if(TextBeginWith(szText, L"00") || TextBeginWith(szText, L"00"))
		return TextToInt32(szText, 8);
	else
		return TextToInt32(szText, uiBase);
}

uint_32 CConvert::ToUInt32(const char_8 * szText, uint_32 uiBase/* = 10*/)
{
	if(TextBeginWith(szText, "0x") || TextBeginWith(szText, "0X"))
		return TextToUInt32(szText, 16);
	else if(TextBeginWith(szText, "00") || TextBeginWith(szText, "00"))
		return TextToUInt32(szText, 8);
	else
		return TextToUInt32(szText, uiBase);
}

uint_32 CConvert::ToUInt32(const char_16 * szText, uint_32 uiBase/* = 10*/)
{
	if(TextBeginWith(szText, L"0x") || TextBeginWith(szText, L"0X"))
		return TextToUInt32(szText, 16);
	else if(TextBeginWith(szText, L"00") || TextBeginWith(szText, L"00"))
		return TextToUInt32(szText, 8);
	else
		return TextToUInt32(szText, uiBase);
}

int_64 CConvert::ToInt64(const char_8 * szText, uint_32 uiBase/* = 10*/)
{
	if(TextBeginWith(szText, "0x") || TextBeginWith(szText, "0X"))
		return TextToInt64(szText, 16);
	else if(TextBeginWith(szText, "00") || TextBeginWith(szText, "00"))
		return TextToInt64(szText, 8);
	else
		return TextToInt64(szText, uiBase);
}

int_64 CConvert::ToInt64(const char_16 * szText, uint_32 uiBase/* = 10*/)
{
	if(TextBeginWith(szText, L"0x") || TextBeginWith(szText, L"0X"))
		return TextToInt64(szText, 16);
	else if(TextBeginWith(szText, L"00") || TextBeginWith(szText, L"00"))
		return TextToInt64(szText, 8);
	else
		return TextToInt64(szText, uiBase);
}

int_64 CConvert::ToUInt64(const char_8 * szText, uint_32 uiBase/* = 10*/)
{
	if(TextBeginWith(szText, "0x") || TextBeginWith(szText, "0X"))
		return TextToUInt64(szText, 16);
	else if(TextBeginWith(szText, "00") || TextBeginWith(szText, "00"))
		return TextToUInt64(szText, 8);
	else
		return TextToUInt64(szText, uiBase);
}

int_64 CConvert::ToUInt64(const char_16 * szText, uint_32 uiBase/* = 10*/)
{
	if(TextBeginWith(szText, L"0x") || TextBeginWith(szText, L"0X"))
		return TextToUInt64(szText, 16);
	else if(TextBeginWith(szText, L"00") || TextBeginWith(szText, L"00"))
		return TextToUInt64(szText, 8);
	else
		return TextToUInt64(szText, uiBase);
}

float_32 CConvert::ToFloat32(const char_8 * szText)
{
	return TextToFloat32(szText);
}

float_32 CConvert::ToFloat32(const char_16 * szText)
{
	return TextToFloat32(szText);
}

float_64 ToFloat64(const char_8 * szText)
{
	return TextToFloat64(szText);
}

float_64 ToFloat64(const char_16 * szText)
{
	return TextToFloat64(szText);
}

bool ToBool(const char_8 * szText)
{
	if(TextEqualEx<char_8>(szText, "true", TEXT_NO_CASE_SENSITIVE))
		return true;
	else
		return false;
}

bool CConvert::ToBool(const char_16 * szText)
{
	if(TextEqualEx<char_16>(szText, L"true", TEXT_NO_CASE_SENSITIVE))
		return true;
	else
		return false;
}

uint_32 CConvert::ToText(int_32 iValue, char_8 * szText, uint_32 uiTextLength, uint_32 uiBase/* = 10*/, bool bUpper/* = false*/)
{
	return TextFromInt32(szText, uiTextLength, iValue, uiBase, bUpper);
}

uint_32 CConvert::ToText(int_32 iValue, char_16 * szText, uint_32 uiTextLength, uint_32 uiBase/* = 10*/, bool bUpper/* = false*/)
{
	return TextFromInt32(szText, uiTextLength, iValue, uiBase, bUpper);
}

NAMESPACE_CORE_END
